|
www.mxdraw.com
|
批量打印对话框
[helpstring("method BatchPrintDialog")]
HRESULT BatchPrintDialog([in] IMxDrawResbuf* pParam, [out,retval] VARIANT_BOOL* pOk);|
参数 |
说明 |
|
[in] IMxDrawResbuf* pParam |
批量打印位置参数, 是个点数组,数组两个点表示一对,一对代表一个打印区域。 |
成功返回True
例如: 代码实现
MxDraw::MXDRAWOCXHANDLE hOcx = MxDraw::GetCurOcxHandle(); if(hOcx == NULL) { MXASSERT(0); return NOERROR; } // TODO: 在此添加实现代码 McGePoint3dArray aryPt; HRESULT hr = MxDrawXFun::IMxDrawResbufToMcGePoint3dArray(pParam,aryPt); if(FAILED(hr) ) { return hr; } *pOk = VARIANT_FALSE; MxDraw::BATCH_PRINT_DATA vec; for(int i = 0;i + 1 < aryPt.length();i+=2) { MxDraw::stuBatchPrintData data; McGePoint3d pt1 = aryPt[i]; McGePoint3d pt2 = aryPt[i+1]; McDbExtents ext; ext.set(pt1,pt2); data.ptLB = ext.minPoint(); data.ptRT = ext.maxPoint(); data.iPrintDirection = m_iDirection; data.sLayoutName = m_sLayoutName; vec.push_back(data); } if(!vec.empty()) { if(MxDraw::BatchPrintDialog(hOcx,vec) ) { *pOk = VARIANT_TRUE; } } return S_OK;
例如: VC COM
IMxDrawPrintPtr print;
print.CreateInstance(__uuidof( MxDrawPrint ));
IMxDrawResbufPtr spData;
spData.CreateInstance(__uuidof( MxDrawXLib::MxDrawResbuf ));
IMxDrawPointPtr pt;
pt.CreateInstance(__uuidof( MxDrawXLib::MxDrawPoint ));
pt->x = 0.0;
pt->y = 0.0;
spData->AddPoint(pt);
pt->x = 100.0;
pt->y = 100.0;
spData->AddPoint(pt);
pt->x = 200.0;
pt->y = 200.0;
spData->AddPoint(pt);
pt->x = 300.0;
pt->y = 300.0;
spData->AddPoint(pt);
if(print->BatchPrintDialog(spData) )
{
AfxMessageBox(_T("Ok"));
}
else
{
AfxMessageBox(_T("Failed"));
}例如: JS代码。
var pRet =mxOcx.Call("Mx_GetMcDbDatabaseBound", "");
if (pRet.AtString(0) == "Ok") {
var pt = mxOcx.NewPoint();
pt.x = pRet.AtDouble(1);
pt.y = pRet.AtDouble(2);
var param = mxOcx.NewResbuf();
param.AddPoint(pt);
pt.x = pRet.AtDouble(3);
pt.y = pRet.AtDouble(4);
param.AddPoint(pt);
var print = mxOcx.NewComObject("IMxDrawPrint");
print.BatchPrintDialog(param);
}
else {
alert("调用失败");
}